package com.yjk1.example.myFirstSofawebBoot.framework;

import java.util.List;

/**
 * @author yujiakui
 * @version 1.0
 * Email: jkyu@haiyi-info.com
 * date: 2018/11/12 14:47
 * description：动态jar管理服务
 **/
public interface DynamicJarManageService {

    /**
     * 加载jar到classLoader中，并指定对应的插件名称
     *
     * @param jarPath
     * @param pluginName
     * @param dependencyPluginNames 依赖的插件名称
     */
    boolean load(String jarPath, String pluginName, List<String> dependencyPluginNames);

    /**
     * 将插件中对应的spring注解bean加载到spring context中
     *
     * @param pluginName
     * @param locationPattern classpath*:com/yjk/** /*.**
     */
    boolean register(String pluginName, String locationPattern);

    /**
     * 将对应的插件从spring context中卸载
     *
     * @param pluginName
     */
    boolean unRegister(String pluginName);

    /**
     * 将对应的插件从classLoader中卸载
     *
     * @param pluginName
     */
    boolean unload(String pluginName);

    /**
     * 根据插件名称获取对应的ClassLoader
     *
     * @param pluginName
     * @return
     */
    ClassLoader getPluginClassLoader(String pluginName);
}
